home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
001-025
/
scopedisk14
/
tcell
/
nvk.mod
< prev
next >
Wrap
Text File
|
1995-03-18
|
3KB
|
86 lines
(*===========================================================================*)
(* Which disk changed *)
(*===========================================================================*)
(* *)
(* Original : Writen by David Siebert *)
(* 08-feb-88 *)
(*===========================================================================*)
(* *)
(* Modified : 02-may-88 David Siebert *)
(* converted from vk to nvk *)
(* *)
(*===========================================================================*)
IMPLEMENTATION MODULE NVK;
FROM SYSTEM IMPORT TSIZE,ADDRESS;
FROM IO IMPORT DoIO,IOStdReq,IORequest,IORequestPtr;
FROM TrackDiskDevice IMPORT IOExtTD,TrackDiskName,TDChangeNum;
FROM PortUtils IMPORT CreatePort,CreateExtIO,DeletePort,DeleteExtIO;
FROM Ports IMPORT MsgPortPtr;
FROM Devices IMPORT OpenDevice,CloseDevice;
(* $S-,$T-,$A+ *)
TYPE
LookString = ARRAY[1..4] OF CHAR;
CONST
ON = 1;
OFF = 0;
NumOfCyl = 80;
NumOfHead = 2;
VAR
x : LONGCARD;
i : INTEGER;
PROCEDURE Change():LONGCARD;
VAR
DumbGymnastics : IORequestPtr;
reqsize : IOExtTD;
diskreq : POINTER TO IOExtTD;
ChdDrv,
Drive,
DiskCount,
Error : LONGCARD;
DiskPort : MsgPortPtr;
i : INTEGER;
BEGIN
ChdDrv:=0;
DiskPort := CreatePort("",0);
DumbGymnastics := CreateExtIO(DiskPort,TSIZE(IOExtTD));
FOR Drive:=0 TO 3 DO
IF Di[INTEGER(Drive)].IsHere THEN
Error := OpenDevice(TrackDiskName,Drive,DumbGymnastics,0);
IF Error=0 THEN
diskreq:=ADDRESS(DumbGymnastics);
diskreq^.iotdReq.ioReq.ioCommand:=TDChangeNum;
Error:=DoIO(DumbGymnastics^);
DiskCount:=diskreq^.iotdReq.ioActual;
Di[INTEGER(Drive)].IsHere:=TRUE;
IF (DiskCount > Di[INTEGER(Drive)].LastChange) THEN
Di[INTEGER(Drive)].LastChange:=DiskCount;
ChdDrv:=Drive;
END ; (* end if *)
CloseDevice (DumbGymnastics);
ELSE
Di[INTEGER(Drive)].IsHere:=FALSE;
Di[INTEGER(Drive)].LastChange:=0;
END;
END; (* end if *)
END; (*end For *)
DeleteExtIO (DumbGymnastics,TSIZE(IOExtTD));
DeletePort(DiskPort);
RETURN ChdDrv;
END Change;
BEGIN
FOR i:=0 TO 3 DO
Di[i].IsHere:=TRUE;
Di[i].LastChange:=0;
END ; (* end for loop *)
x:=Change();
END NVK.